package br.com.treinamento.gestaoExperienciaProfissional.dao;

import java.io.Serializable;

import javax.persistence.NoResultException;
import javax.persistence.Query;

import br.com.treinamento.gestaoExperienciaProfissional.model.Usuario;

public class UsuarioDAO extends GenericDAO<Usuario> implements Serializable {

	private static final long serialVersionUID = -5828854152854362939L;

	public Usuario recuperarUsuario(Usuario usuario) {
		StringBuilder sb = new StringBuilder();
		sb.append("SELECT DISTINCT (u) ");
		sb.append("FROM Usuario u ");
		sb.append("LEFT JOIN FETCH u.pessoa pes ");
		sb.append("LEFT JOIN FETCH u.grupos g ");
		sb.append("LEFT JOIN FETCH g.permissoes p ");
		sb.append("WHERE u.login = :login");
		sb.append(" AND ");
		sb.append("u.senha = :senha");

		Query query = criarQuery(sb.toString());
		query.setParameter("login", usuario.getLogin());
		query.setParameter("senha", usuario.getSenhaCriptografada());

		try {
			return (Usuario) query.getSingleResult();
		} catch (NoResultException e) {
			return null;
		}
	}

}
